/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jomijushi.fid.servicios;


import com.jomijushi.fid.dao.BobinaImplementsDAO;
import com.jomijushi.fid.dao.BobinaInterfazDAO;
import com.jomijushi.fid.dominio.FidBobina;
import java.util.List;
import javax.persistence.EntityManager;



/**
 * Servicio de consultas y operaciones de datos para la entidad
 * Bobina.
 * @author Pedro Shiguihara J
 */
public class BobinaImplementsService extends JpaService<Integer,FidBobina> implements BobinaInterfazService {


    /* Atributos */
    private BobinaInterfazDAO bobinaDAO = new BobinaImplementsDAO();
 

    /*Metodos*/


   /**
    * Dado un objeto FidBobina, se registra en la base de datos.
    * @param objBobina Objeto FidBobina que será registrada en la base de datos.
    */
    public void crearBobina(FidBobina objBobina) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        bobinaDAO.setEntityManager(em);
        bobinaDAO.persist(objBobina);
        em.getTransaction().commit();
        em.close();
    }


    /**
     * Dado un objeto FidBobina, se modifica en la base de datos.
     * @param objBobina Objeto FidBobina que será modificada en la base de datos.
     */
    public void editarBobina(FidBobina objBobina) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        bobinaDAO.setEntityManager(em);
        bobinaDAO.merge(objBobina);
        em.getTransaction().commit();
        em.close();
    }


    /**
     * Dado un objeto FidBobina, se elimina de la base de datos.
     * @param id ID de un objeto FidBobina que será eliminada de la base de datos.
     */
    public void eliminarBobina(int id) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        bobinaDAO.setEntityManager(em);
        FidBobina fidBobina = null;
        fidBobina = em.getReference(FidBobina.class, id);
        fidBobina.getId();
        bobinaDAO.remove(fidBobina);
        em.getTransaction().commit();
        em.close();
    }


     /**
     * Dado un id de un objeto FidBobina, se recupera de la base de datos.
     * @param id Identificador (id) del objeto FidBobina.
     * @return id ID de un objeto FidBobina que será recuperada de la base de datos.
     */
    public FidBobina buscarBobina(int id) {
        EntityManager em = emf.createEntityManager();
        try {
            bobinaDAO.setEntityManager(em);
            FidBobina frt = null;
            frt = bobinaDAO.findById(id);
            return frt;
        } finally {
            em.close();
        }
    }


    /**
     * Dado un conjunto de parámetros, se recuperará una lista de objetos FidBobina de la base de datos.
     * @param hayConsulta Determina si el parametro "jpql" viene con una consulta (true) o vacío (false).
     * @param jpql Consulta JPQL para retornar objetos de la base de datos.
     * @param esListarTodo Indicador para determinar si se hará un listado de todos los objetos encontrador (true)
     * o sólo de una parte, segmentada por los parametros "nRegs" y "regIni" (false)
     * @param nRegs Cantidad de registros a ser retornados de la base de datos de todos los encontrados.
     * @param regIni Número de registro recuperado desde donde parte el conteo de los nRegs a ser listados.
     * @return objBobina Objeto FidBobina que será recuperada de la base de datos.
     */
    public List<FidBobina> listarBobinas(boolean hayConsulta, String jpql, boolean esListarTodo, int nRegs, int regIni) {
        EntityManager em = emf.createEntityManager();
        try {
            bobinaDAO.setEntityManager(em);
            List<FidBobina> lst = bobinaDAO.listarBobina(hayConsulta, jpql, esListarTodo, nRegs, regIni);
            return lst;
        } finally {
            em.close();
        }
    }


}
